﻿using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.ComponentModel.DataAnnotations.Schema;

namespace SWGeneracionE.Models
{

	public partial class GEEntities : DbContext
	{

		public GEEntities() : base("GEEntities")
		{
		}

        protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
        {
            dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

            //indicar propiedades específicas de ParticipanteXEvento
            dbModelBuilder.Entity<ParticipanteXEvento>().HasKey(p => p.idParticipanteXEvento);
            dbModelBuilder.Entity<ParticipanteXEvento>()
                            .Property(p => p.idParticipanteXEvento)
                            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            dbModelBuilder.Entity<ParticipanteXEvento>().Property(p => p.recaudacionS).HasColumnName("recaudacion");
            dbModelBuilder.Entity<ParticipanteXEvento>().Property(p => p.idParticipante).IsRequired();
            dbModelBuilder.Entity<ParticipanteXEvento>().Property(p => p.idEvento).IsRequired();
            dbModelBuilder.Entity<ParticipanteXEvento>()
                            .HasOptional(p => p.Tutor)
                            .WithMany(p => p.Menores)
                            .HasForeignKey(p => p.idTutor);
            dbModelBuilder.Entity<ParticipanteXEvento>().Ignore(p => p.AbonoTotalLOC);
            dbModelBuilder.Entity<ParticipanteXEvento>().Ignore(p => p.AbonoTotalUSD);
            dbModelBuilder.Entity<ParticipanteXEvento>().Ignore(p => p.RecaudacionTotal);
            dbModelBuilder.Entity<ParticipanteXEvento>().Ignore(p => p.ValidarPagoBus);

            //indicar propiedades específicas de Transferencia
            dbModelBuilder.Entity<Transferencia>().HasKey(p => p.idTransferencia);
            dbModelBuilder.Entity<Transferencia>()
                            .Property(p => p.idTransferencia)
                            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            dbModelBuilder.Entity<Transferencia>().Ignore(p => p.codigoReceptor);
            dbModelBuilder.Entity<Transferencia>()
                            .HasRequired(p => p.Pagador)
                            .WithMany(p => p.Debitos)
                            .HasForeignKey(p => p.idPagador);
            dbModelBuilder.Entity<Transferencia>()
                            .HasRequired(p => p.Receptor)
                            .WithMany(p => p.Creditos)
                            .HasForeignKey(p => p.idReceptor);
        }

		public DbSet<Actividad> Actividad { get; set; }
		public DbSet<AsignacionGrupo> AsignacionGrupo { get; set; }
		public DbSet<Bitacora> Bitacora { get; set; }
		public DbSet<DocumentoXParticipante> DocumentoXParticipante { get; set; }
		public DbSet<Evento> Evento { get; set; }
		public DbSet<Grupo> Grupo { get; set; }
		public DbSet<Iglesia> Iglesia { get; set; }
		public DbSet<IngresoRecaudacion> IngresoRecaudacion { get; set; }
		public DbSet<Lugar> Lugar { get; set; }
		public DbSet<Movimiento> Movimiento { get; set; }
		public DbSet<Notificacion> Notificacion { get; set; }
		public DbSet<Pago> Pago { get; set; }
		public DbSet<Pais> Pais { get; set; }
		public DbSet<Parametro> Parametro { get; set; }
		public DbSet<Participante> Participante { get; set; }
		public DbSet<ParticipanteXEvento> ParticipanteXEvento { get; set; }
		public DbSet<Recaudacion> Recaudacion { get; set; }
		public DbSet<Servicio> Servicio { get; set; }
		public DbSet<TipoDocumentoID> TipoDocumentoID { get; set; }
        public DbSet<Transferencia> Transferencia { get; set; }
		public DbSet<webpages_Menu> webpages_Menu { get; set; }
		public DbSet<webpages_MenuRol> webpages_MenuRol { get; set; }
        public DbSet<Bus> Bus { get; set; }
        public DbSet<BusParticipante> BusParticipante { get; set; }

	}

}